﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QldtSdh.DAL.Models;

namespace QldtSdh.BLL
{
    class BizBaoLuu
    {
        public static List<BaoLuu> GetList()
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.BaoLuuDbSet.OrderByDescending(e => e.NgayBaoLuu).ToList();
            }
        }

        public static BaoLuu GetByIDHocVien(string maHocVien)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.BaoLuuDbSet.Where(e => e.MaHocVien == maHocVien).FirstOrDefault();
            }
        }

        public static CODE_RESULT_RETURN BaoLuu(BaoLuu baoLuu)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                var bl = db.BaoLuuDbSet.Where(e => e.MaHocVien == baoLuu.MaHocVien).FirstOrDefault();
                if (bl != null)
                    return CODE_RESULT_RETURN.MaTrung;
                //var hv = db.HocVienDbSet.Where(e => e.MaHocVien == baoLuu.MaHocVien).FirstOrDefault();
                //if (hv != null)
                //    hv.MaLopKhoaNganhGUID = null;
                db.BaoLuuDbSet.Add(baoLuu);
                db.SaveChanges();
                NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                BizNhatKyHoatDong.InitData<BaoLuu>(nhatKy, null, baoLuu.MaHocVien, LOAIDOITUONG.BẢO_LƯU, LOAITHAOTAC.Thêm);
                BizNhatKyHoatDong.Add<BaoLuu>(nhatKy, baoLuu);
                return CODE_RESULT_RETURN.ThanhCong;
            }
        }

        public static CODE_RESULT_RETURN VaoHocLai(BaoLuu baoLuu, string maLopKhoaNganh)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                /*
                 * Cập nhật lại thông tin ngày vào học lại trong bảng bảo lưu
                 * Cập nhật lại lớp học khóa ngành của học viên sau khi vào học lại
                 */
                var bl = db.BaoLuuDbSet.Where(e => e.MaHocVien == baoLuu.MaHocVien).FirstOrDefault();
                if (bl == null)
                    return CODE_RESULT_RETURN.ThatBai;
                NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                BizNhatKyHoatDong.InitData<BaoLuu>(nhatKy, baoLuu, baoLuu.MaHocVien, LOAIDOITUONG.BẢO_LƯU, LOAITHAOTAC.Chỉnh_sửa);
                bl.NgayNhapHocLai = baoLuu.NgayNhapHocLai;
                db.SaveChanges();
                BizNhatKyHoatDong.Add<BaoLuu>(nhatKy, baoLuu);

                var hocVien = db.HocVienDbSet.Where(e => e.MaHocVien == baoLuu.MaHocVien).FirstOrDefault();
                if (hocVien != null)
                {
                    BizNhatKyHoatDong.InitData<HocVien>(nhatKy, hocVien, hocVien.MaHocVien, LOAIDOITUONG.HỌC_VIÊN, LOAITHAOTAC.Chỉnh_sửa);
                    hocVien.MaLopKhoaNganhGUID = maLopKhoaNganh;
                    db.SaveChanges();
                    BizNhatKyHoatDong.Add<HocVien>(nhatKy, hocVien);
                }
                return CODE_RESULT_RETURN.ThanhCong;
            }
        }
    }
}
